import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lenovo
 * Date: 2022-05-08
 * Time: 11:35
 */
public class TestDemo {

    public static void main(String[] args) {

    }
    public static void main8(String[] args) {
        //使用clone直接克隆一个副本
        int[] arr = {1,2,3,4,5};
        int[] copy = arr.clone();//源数组.clone()
        System.out.println("=========拷贝后========");
        System.out.println("arr[]"+Arrays.toString(arr));//打印
        System.out.println("copy[]"+Arrays.toString(copy));;

    }
public static void main7(String[] args) {
    //使用System.arraycopy方法完成拷贝
    int[] arr = {1,2,3,4,5};
    int[] copy = new int[arr.length];
    /**你要拷贝哪个数组
     * 你要从该数数组的哪个下标开始拷贝
     * 你要拷贝到哪个数组
     * 你要从拷贝到的目的数组的哪个下标开始拷贝
     * 你要拷贝多长
     */
    System.arraycopy(arr,0,copy,0,arr.length);//[0,arr.length)
    System.out.println("=========拷贝后========");
    System.out.println("arr[]"+Arrays.toString(arr));//打印
    System.out.println("copy[]"+Arrays.toString(copy));;
}
    //使用Arrays中copyOf方法完成拷贝
    public static void main6(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = Arrays.copyOf(arr,arr.length);
        System.out.println("=========拷贝后========");
        System.out.println("arr[]"+Arrays.toString(arr));//打印
        System.out.println("copy[]"+Arrays.toString(copy));;
    }
    //数组拷贝
    public static void main5(String[] args) {
        int[] arr = {1,2,3,4,5};//静态初始化创建一个数组，数组内容{1,2,3,4,5}
        int[] copy = new int[arr.length];//动态初始化创建一个数组，数组的长度和arr相同,数组内容为0
        System.out.println("arr[]"+Arrays.toString(arr));//打印
        System.out.println("copy[]"+Arrays.toString(copy));;
        System.out.println("=========拷贝前========");
        for (int i = 0; i < arr.length; i++) {//将arr[i]的值赋给copy[i]
         copy[i]=arr[i];
        }
        System.out.println("=========拷贝后========");
        System.out.println("arr[]"+Arrays.toString(arr));//打印
        System.out.println("copy[]"+Arrays.toString(copy));;
    }
    //循环实现将数组以字符串的形式打印出
//    public static void print(int[] arr){//接收引用在堆上所引用的对象
//        System.out.print("[");//先打印[
//        for (int i = 0; i < arr.length; i++) {//用循环遍历数组，并且打印数组里的元素
//            System.out.print(arr[i]);
//            if(i != arr.length-1){//当i==arr.length-1时会打印出：[1,2,3,4,5，]
//                System.out.print(",");
//            }
//        }
//        System.out.print("]");
//    }
    //循环实现将数组转化成字符串
    public static String print(int[] arr){
        if(arr == null){//如果引用不指向任何对象，则直接返回null
            return "null";
        }
        String ret = "[";//定义一个字符串：[
        for (int i = 0; i < arr.length; i++) {
            ret+=arr[i];//用+将字符串ret与arr[i]拼接
            if(i != arr.length-1){//当数组的下标为i == arr.length时，打印结果：[1,2,3,4,5，]
                ret+=",";
            }
        }
        ret+="]";
        return ret;
    }
    public static void main4(String[] args) {
        int[] arr = {1,2,3,4,5};
        String ret = print(arr);//传递引用
        System.out.println(ret);
    }
//数组转字符串:Arrays.toString实现
    public static void main3(String[] args) {
        int[] arr = {1,2,3,4,5};
        String ret = Arrays.toString(arr);
        System.out.println(ret);
    }
    public static void main2(String[] args) {
        //定义不规则二维数组
        int[][] arr = new int[2][];//不规则二维数组
        arr[0] = new int[3];
        arr[1] = new int[5];
        String ret = Arrays.deepToString(arr);//打印二维数组需要使用ToString
        System.out.println(ret);
    }
    public static void main1(String[] args) {
        //for each遍历二维数组
        int[][] arr={{1,2,3},{4,5,6}};
        for (int[] arr1:arr) {
            for (int x: arr1) {
                System.out.print(x+" ");
            }
            System.out.println();
        }
    }
}
